package com.dragon.modules.yuegou.mapper.order;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dragon.modules.yuegou.entity.order.GoodsEntity;
import com.dragon.modules.yuegou.model.order.CashCouponDataDetail;
import com.dragon.modules.yuegou.model.order.CouponDataDetail;
import com.dragon.modules.yuegou.model.order.Goods;
import com.dragon.modules.yuegou.query.order.GoodsQuery;
import com.dragon.modules.yuegou.query.order.PickupQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 单品 Mapper接口
 *
 * @author pbuilder generated
 * @date 2019-04-03 13:57:50
 * @version 2.0
 */
@Component("ordGoodsMapper")
public interface GoodsMapper extends BaseMapper<GoodsEntity> {

    /**
     * 查询商品核销记录分页列表
     */
    IPage<Goods> searchPickup(IPage<Goods> page, @Param("query") PickupQuery query);

    /**
     * 导出商品核销记录
     */
    List<Goods> searchPickup(@Param("query") PickupQuery query);

    /**
     * 查询单品信息
     * */
	Goods goodsDetails(String goodsId);

	/**
	 * 查询订单下其它单品信息
	 * */
	List<Goods> tobeUsed(@NotNull @Param("id") String id,@NotEmpty @Param("orderNo") String orderNo);
	
	/**
	 * 查询用户未使用单品列表
	 * */
	IPage<Goods> unused(IPage<Goods> page,@Param("query") GoodsQuery query);


	/**
	 * 查询用户未使用单品列表
	 * */
	IPage<Goods> unusedGoods(IPage<Goods> page,@Param("query") GoodsQuery query,@Param("orderType") Integer orderType);


	/**
	 * 查询全部单品列表
	 * */
	IPage<Goods> all(IPage<Goods> page,@Param("query") GoodsQuery query);

	/**
	 * 查询全部单品列表
	 * */
	IPage<Goods> allOrder(IPage<Goods> page,@Param("query") GoodsQuery query,@Param("orderType") Integer orderType);


	/**
	 * 悦商惠查询全部单品列表
	 * */
	IPage<Goods> goodsList(IPage<Goods> page,@Param("query") GoodsQuery query,@Param("term") String term,
			@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);

	/**
	 * 已使用列表
	 * */
	IPage<Goods> used(IPage<Goods> page, @Param("query") GoodsQuery query);

	/**
	 * 已完成列表
	 * */
	IPage<Goods> completedGoods(IPage<Goods> page, @Param("query") GoodsQuery query,@Param("orderType") Integer orderType);


	/**
	 * 已过期列表
	 * */
	IPage<Goods> expired(IPage<Goods> page, @Param("query") GoodsQuery query);

	List<Goods> listForMyOften(@Param("memberId") String memberId);

	/**
	 * 查询即将过期时间的信息
	 * @return
	 */
	List<Goods> searchWillExpire();

	/**
	 * @param page
	 * @param data
	 * @return
	 */
	IPage<CouponDataDetail> dataDetail(IPage<Goods> page, @Param("data") CashCouponDataDetail data);

	/**
	 * @param data
	 * @return
	 */
	List<CouponDataDetail> dataDetail(@Param("data") CashCouponDataDetail data);

    List<Goods> getOverdueOrderInfos();

	/**
	 * 未使用单品
	 * @param busdId
	 * @param memberId
	 * @return
	 */
	Integer noUseNum(@Param("busdId")String busdId, @Param("memberId")String memberId);
}
